package model

import (
	"gitee.com/liumou_site/logger"
	"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
	"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
	"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
	dnspod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod/v20210323"
)

// Delete 删除指定域名的DNS记录。
// 该函数通过腾讯云SDK调用DNSPod API，删除指定域名的DNS记录。
//
// 参数:
//   - name: 要删除DNS记录的域名名称,例如 "www.example.com"
//   - RecordId: 要删除的DNS记录的ID
//
// 函数流程:
//  1. 使用腾讯云账户的SecretId和SecretKey实例化认证对象。
//  2. 配置客户端选项，指定API的访问端点。
//  3. 实例化DNSPod客户端对象，用于与腾讯云API进行交互。
//  4. 创建删除DNS记录的请求对象，并设置要删除的域名。
//  5. 调用API删除DNS记录，并处理可能的错误。
//  6. 输出API返回的JSON格式响应。
func (l *Login) Delete(name string, RecordId uint64) error {
	if l.CheckNameIsExist(name) {
		logger.Info("删除DNS记录: ", name)
	} else {
		logger.Debug("记录不存在")
		return nil
	}
	// 实例化认证对象，使用腾讯云账户的SecretId和SecretKey
	credential := common.NewCredential(l.Domain.Login.Id, l.Domain.Login.Key)

	// 配置客户端选项，指定API的访问端点
	cpf := profile.NewClientProfile()
	cpf.HttpProfile.Endpoint = "dnspod.tencentcloudapi.com"

	// 实例化DNSPod客户端对象，用于与腾讯云API进行交互
	client, _ := dnspod.NewClient(credential, "", cpf)

	// 创建删除DNS记录的请求对象，并设置要删除的域名
	request := dnspod.NewDeleteRecordRequest()
	request.Domain = common.StringPtr(l.Domain.Domain.Domain)
	request.RecordId = common.Uint64Ptr(RecordId)

	// 调用API删除DNS记录，并处理可能的错误
	_, err := client.DeleteRecord(request)
	if _, ok := err.(*errors.TencentCloudSDKError); ok {
		logger.Error("An API error has returned: ", err)
		return err
	}
	if err != nil {
		logger.Error("An API error has returned: ", err)
		return err
	}
	logger.Info("删除DNS记录成功")
	// 输出API返回的JSON格式响应
	//fmt.Printf("%s", response.ToJsonString())
	return nil
}
